#!/bin/bash

################################################################################
# 脚本名称：get_gateway_ip_addr.sh
# 功能描述：
#   本脚本用于获取默认网关IP地址，集成多种方法，全面测试每种方法的输出结果。
#   主要方法包括：
#     1. route -n + grep + awk
#     2. route + grep + awk
#     3. ip route list + awk
#     4. ip route show + grep + awk
#     5. ip route show default + awk
#     6. ip route list dev + awk
#
# 使用方法：
#   直接运行脚本：
#       ./get_gateway_ip_addr.sh
#
#   查看帮助信息：
#       ./get_gateway_ip_addr.sh -h
################################################################################

#########################
# 获取默认网关IP的方法
#########################

# 方法1：route + grep + awk
get_gateway_method1() {
    route | grep default | awk '{print $2}'
}

# 方法2：ip route list + awk
get_gateway_method2() {
    ip route list | awk '/^default/ {print $3}'
}

# 方法3：ip route show + grep + awk
get_gateway_method3() {
    ip route show | grep -i 'default via' | awk '{print $3}'
}

# 方法4：ip route show default + awk
get_gateway_method4() {
    ip route show default | awk '{print $3}'
}

# 方法5：ip route list dev + awk
get_gateway_method5() {
    default_iface=$(ip route | awk '/default/ { print $5 }')
    gateway=$(ip route list dev ${default_iface} | awk '/^default/ {print $3}')
    if [ -z "$gateway" ]; then
        echo "gateway is blank"
    else
        echo "$gateway"
    fi
}

#########################
# 帮助信息
#########################
usage() {
    echo "用法: $0"
    echo "直接运行脚本显示默认网关IP地址。"
    echo "示例: $0"
}

#########################
# 主函数
#########################
main() {
    if [[ "$1" == "-h" || "$1" == "--help" ]]; then
        usage
        exit 0
    fi

    methods=(get_gateway_method1 get_gateway_method2 get_gateway_method3 get_gateway_method4 get_gateway_method5)
    for method in "${methods[@]}"; do
        gateway=$($method)
        echo "默认网关IP地址：$gateway (方法：$method)"
    done
}

main "$@"
